package com.lant.service;

import com.lant.pojo.LantResult;

/**
 * @description: redis服务
 * @projectName: lant-redis-api
 * @className: RedisService
 * @author: YFL
 * @createTime: 2020年4月29日 上午11:17:24
 */
public interface RedisService {

    /**
     * @Title: get
     * @Description: redis通过key获取value
     * @param: key
     * @return: LantResult
     * @date: 2020年4月29日 下午1:31:28
     */
    LantResult get(String key);

    /**
     * @Title: set
     * @Description: redis添加缓存
     * @param: key
     * @param: value
     * @return: LantResult
     * @date: 2020年4月29日 下午1:32:53
     */
    LantResult set(String key, String value);

    /**
     * @Title: set
     * @Description: redis添加缓存和有效期
     * @param: key-键
     * @param: value-值
     * @param: second-秒
     * @return: LantResult
     * @date: 2020年4月29日 下午1:32:53
     */
    LantResult set(String key, String value, int second);

    /**
     * @Title: hget
     * @Description: Hash操作 返回哈希表 key 中给定域 field 的值。
     * @param: hkey
     * @param: key
     * @return: LantResult 给定域的值
     * @date: 2020年4月29日 下午1:44:44
     */
    LantResult hget(String hkey, String key);

    /**
     * 
     * @Title: hset
     * @Description: Hash操作 设置字段值
     * @param: hkey
     * @param: key
     * @param: value
     * @return: LantResult如果 field 是哈希表中的一个新建域，并且值设置成功，返回 1；如果哈希表中域 field 已经存在且旧值已被新值覆盖，返回 0
     * @date: 2020年4月29日 下午1:43:52
     */
    LantResult hset(String hkey, String key, String value);

    /**
     * @Title: incr
     * @Description: Redis基本（字符串）操作 将 key 中储存的数字值增一。
     * @param: key 如果 key 不存在，那么 key 的值会先被初始化为 0 ，然后再执行 INCR 操作。 如果值包含错误的类型，或字符串类型的值不能表示为数字，那么返回一个错误。
     * @return: LantResult
     * @date: 2020年4月29日 下午1:41:40
     */
    LantResult incr(String key);

    /**
     * @Title: expire
     * @Description: Redis基本（键）操作 设置某一记录的生存时间，过期删除
     * @param: key设置可挥发的key
     * @param: seconds超时时间，单位：秒
     * @return: LantResult
     * @date: 2020年4月29日 下午1:40:22
     */
    LantResult expire(String key, int seconds);

    /**
     * @Title: ttl
     * @Description: Redis基本（键）操作 查看某个key的剩余生存时间:time to live
     * @param: key 当 key 不存在或没有设置生存时间时，返回 -1 。否则，返回 key 的剩余生存时间(以秒为单位)。
     * @return: LantResult
     * @date: 2020年4月29日 下午1:39:13
     */
    LantResult ttl(String key);

    /**
     * @Title: del
     * @Description: 从redis中根据key删除对象值
     * @param: key
     * @return: long
     * @date: 2020年4月29日 下午1:46:59
     */
    LantResult del(String key);

    /**
     * @Title: hdel
     * @Description: Hash操作 删除哈希表中的一个字段，字段不存在将被忽略
     * @param: hkey
     * @param: key
     * @return: LantResult被成功移除的域的数量，不包括被忽略的域
     * @date: 2020年4月29日 下午1:45:49
     */
    LantResult hdel(String hkey, String key);
}
